package com.sqlcheck.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 批量操作配置
 * 定义了系统中批量操作的策略和行为准则
 */
@Configuration
@ConfigurationProperties(prefix = "app.batch-operation")
public class BatchOperationConfig {
    
    /**
     * 是否启用批量操作失败后的降级机制
     * 默认为 false，即不启用降级机制
     * 
     * 注意：修改此配置需要谨慎考虑，因为降级机制可能会影响数据一致性
     */
    private boolean enableFallbackOnFailure = false;
    
    /**
     * 批量操作的最大重试次数
     * 默认为 0，即不重试
     */
    private int maxRetryAttempts = 0;
    
    /**
     * 批量操作超时时间（毫秒）
     * 默认为 30秒
     */
    private long timeoutMillis = 30000L;
    
    /**
     * 单次批量操作的最大记录数
     * 默认为 1000条
     */
    private int maxBatchSize = 1000;
    
    public boolean isEnableFallbackOnFailure() {
        return enableFallbackOnFailure;
    }
    
    public void setEnableFallbackOnFailure(boolean enableFallbackOnFailure) {
        this.enableFallbackOnFailure = enableFallbackOnFailure;
    }
    
    public int getMaxRetryAttempts() {
        return maxRetryAttempts;
    }
    
    public void setMaxRetryAttempts(int maxRetryAttempts) {
        this.maxRetryAttempts = maxRetryAttempts;
    }
    
    public long getTimeoutMillis() {
        return timeoutMillis;
    }
    
    public void setTimeoutMillis(long timeoutMillis) {
        this.timeoutMillis = timeoutMillis;
    }
    
    public int getMaxBatchSize() {
        return maxBatchSize;
    }
    
    public void setMaxBatchSize(int maxBatchSize) {
        this.maxBatchSize = maxBatchSize;
    }
}